package com.yztstudy.Controller;

import com.yztstudy.Service.CategoryService;
import com.yztstudy.param.ProductHotParam;
import com.yztstudy.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

/**
 * 类别的表示层
 */

@RestController
@RequestMapping("/category")
public class CategoryController {

    @Autowired
    private CategoryService categoryService;


    /**
     * TODO 根据种类名查询主键
     * @param categoryName 种类名
     * @return
     */
    @GetMapping("/promo/{categoryName}")
    public R byName(@PathVariable String categoryName)
    {

        // TODO 1.如果传过来的参数为null或者空字符串
        if (StringUtils.isEmpty(categoryName))
        {
            return R.fail("类别名称为null,无法查询类型数据!");
        }

        // TODO 2.如果校验通过,就送到业务逻辑层查询
        return categoryService.byName(categoryName);
    }


    /**
     * TODO 热门商品的ID查询
     * @param productHotParam 前端发过来的热门商品名称集合
     * @param result 校验后的结果
     * @return
     */
    @PostMapping("/hots")
    public R hots(@RequestBody @Validated ProductHotParam productHotParam, BindingResult result)
    {
        // TODO 1.如果校验失败
        if (result.hasErrors())
        {
            return R.fail("类别集合为null,无法查询类型数据!");
        }

        // TODO 2.如果校验通过,就送到业务逻辑层查询
        return categoryService.hots(productHotParam);
    }


    /**
     * TODO 查询所有的类别
     * @return
     */
    @PostMapping("/list")
    public R list()
    {
        return categoryService.list();
    }

}
